package com.zrfintech.manage.controller.mg;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zrfintech.common.pojo.BasePageEntity;
import com.zrfintech.domain.MgPageConfig;
import com.zrfintech.manage.pojo.PageResponse;
import com.zrfintech.manage.service.MgPageConfigService;
import com.zrfintech.manage.vo.request.PageConfigRequest;
import com.zrfintech.service.MgPageConfigRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/webapi/pageConfig")
public class MgPageConfigController {

    @Autowired
    protected MgPageConfigRepo mgPageConfigRepo;

    @Autowired
    protected MgPageConfigService mgPageConfigService;


    @RequestMapping("/getPageJson")
    public Object getPageJson(String pageCode) {
        MgPageConfig pageConfig = mgPageConfigRepo.getByPageCode(pageCode);
        if (pageConfig != null) {
            return JSONObject.parseObject(pageConfig.getPageConfigJson());
        }
        return new JSONObject();
    }

    @RequestMapping("/simpleList")
    public Object simpleList(BasePageEntity basePageEntity) {
        PageResponse<MgPageConfig> pageResponse = new PageResponse<>();
        Page<MgPageConfig> pageConfigPage = mgPageConfigRepo.pageList(basePageEntity);
        pageResponse.setItems(pageConfigPage.getRecords());
        pageResponse.setTotal(pageConfigPage.getTotal());
        return pageResponse;
    }

    @RequestMapping("/upsert")
    public Object upsert(@RequestBody PageConfigRequest pageConfig) {
        pageConfig.setPageConfigJson(JSONObject.parseObject(pageConfig.getPageConfigJson()).toJSONString());
        mgPageConfigService.upsert(pageConfig, pageConfig.getPageOptionList(), pageConfig.getMenuCode(), pageConfig.getRoleCodeList());
        return new JSONObject();
    }


    @RequestMapping("/get")
    public Object get(@RequestBody MgPageConfig pageConfig) {
        return mgPageConfigRepo.getById(pageConfig.getId());
    }
}
